package JZOffer;

/**
 * 剑指 Offer 52. 两个链表的第一个公共节点
 * 输入两个链表，找出它们的第一个公共节点。
 * **/

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */

//常规方法 ：用A的一个节点 去比较B的所有节点
    //优化方法：利用两个链表的节点和 相同
class Solution52 {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode a = headA;
        ListNode b = headB;

        while (a != b) {
            if (a == null) a = headB;
            else           a = a.next;

            if (b == null) b = headA;
            else           b = b.next;

        }
        return a;
    }
}